package br.com.tweetsentiment.controle;

import java.util.List;
import java.util.Map;
import java.util.Set;

import br.com.tweetsentiment.dao.PalavraAnalisadaDAO;
import br.com.tweetsentiment.dao.PalavraDAO;
import br.com.tweetsentiment.modelo.Palavra;

public class PalavraCtrl {
	
	public void CalculaMedia() throws Exception
	{
		PalavraAnalisadaDAO cPalavraAnalisadaDAO = new PalavraAnalisadaDAO();
		
		cPalavraAnalisadaDAO.openConnection();
		
		PalavraDAO cPalavraDAO = new PalavraDAO();
		
		cPalavraDAO.openConnection();
		
		Map<String, List<Palavra>> mapPalavraAnalisada = cPalavraAnalisadaDAO.listar();
		Map<String, Palavra> mapPalavra = cPalavraDAO.listar();
		
		Set<String> set = mapPalavraAnalisada.keySet();
		
		for(String key : set)
		{
			List<Palavra> lstPalavra = (List<Palavra>) mapPalavraAnalisada.get(key);
			
			int nPeso = CalculaMedia(lstPalavra);
			
			Palavra cPalavra =  mapPalavra.get(key);
			 
			if(cPalavra == null)
			{
				cPalavra = new Palavra(0, (String) key, nPeso);
			}
			else
			{
				cPalavra.setPeso(nPeso);
			}
			
			cPalavraDAO.salvar(cPalavra);
		}
		
		cPalavraAnalisadaDAO.closeConnection();
		
		cPalavraDAO.closeConnection();
	}
	
	public int CalculaMedia(List<Palavra> lstPalavra)
	{
		int nSoma = 0;
		
		for(int nIndice = 0; nIndice < lstPalavra.size(); nIndice++)
		{
			nSoma += lstPalavra.get(nIndice).getPeso();
		}
		
		
		return Math.round(nSoma/(lstPalavra.size() != 0 ? lstPalavra.size(): 1));
	}
}
